package tema10.model;

import java.io.Serializable;
import java.sql.Date;
import java.util.Calendar;
import java.util.UUID;

public class Contacto implements Serializable {
    private UUID id;
    private String nombre = null;
    private String apellidos = null;
    private String telefono = null;
    private Calendar fechaNacimiento;
    private String informacion = null;
    
    public Contacto(){
        this.id = UUID.randomUUID();
        this.fechaNacimiento = Calendar.getInstance();
    }
    
    public Contacto(String id){
        this.id = UUID.fromString(id);
        this.fechaNacimiento = Calendar.getInstance();
    }
    
    public Contacto(UUID id){
        this.id = id;
        this.fechaNacimiento = Calendar.getInstance();
    }
    
    public Contacto(String nombre, String apellidos, String telefono,
            int year, int month, int date, String informacion){
        this();
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.telefono = telefono;
        this.fechaNacimiento = Calendar.getInstance();
        this.fechaNacimiento.clear();
        this.fechaNacimiento.set(year, month, date);
        this.informacion = informacion;
    }

    /**
     * @return the ID as string
     */
    public String getIdAsString() {
        return id.toString();
    }
    
    /**
     * @return the id
     */
    public UUID getId() {
        return id;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the telefono
     */
    public String getTelefono() {
        return telefono;
    }

    /**
     * @param telefono the telefono to set
     */
    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    /**
     * @return the fechaNacimiento
     */
    public Calendar getFechaNacimiento() {
        return fechaNacimiento;
    }
    
    /**
     * @return the fechaNacimiento
     */
    public Date getFechaNacimientoAsSQLDate() {
        Date date = new Date(this.getFechaNacimientoInMillis());
        return date;
    }
    
    /**
     * @return the fechaNacimiento as long
     */
    public long getFechaNacimientoInMillis() {
        return fechaNacimiento.getTimeInMillis();
    }
    
    /**
     * @return the fechaNacimiento as String
     */
    public String getFechaNacimientoAsString() {
        return fechaNacimiento.getTime().toString();
    }

    /**
     * @param fechaNacimiento the fechaNacimiento to set
     */
    public void setFechaNacimientoFromCalendar(Calendar fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }
    
    /**
     * @param fechaNacimiento the fechaNacimiento to set
     */
    public void setFechaNacimientoFromLong(long fechaNacimiento) {
        this.fechaNacimiento.clear();
        this.fechaNacimiento.setTimeInMillis(fechaNacimiento);
    }
    
    /**
     * @param fechaNacimiento the fechaNacimiento to set
     */
    public void setFechaNacimiento(int year, int month, int date) {
        this.fechaNacimiento.clear();
        this.fechaNacimiento.set(year, month-1, date);
    }

    /**
     * @return the informacion
     */
    public String getInformacion() {
        return informacion;
    }

    /**
     * @param informacion the informacion to set
     */
    public void setInformacion(String informacion) {
        this.informacion = informacion;
    }

    /**
     * @return the apellidos
     */
    public String getApellidos() {
        return apellidos;
    }

    /**
     * @param apellidos the apellidos to set
     */
    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }  

}
